linux下mysql5.7初始密码查看及忘记密码重置

linux下mysql5.7初始密码查看及忘记密码重置

前段时间安装mysql5.7后,第一次登陆发现空密码怎么都登陆不成功,后来网上查了一下发现,从5.7开始会自动生成一个随机密码了。

  1. 查看初始密码
grep 'temporary password' /var/log/mysqld.log 
2016-07-08T02:25:46.311098Z 1 [Note] A temporary password is generated for root@localhost: MtPqF0/oN5zo
其中“MtPqF0/oN5zo”就为我们要找的初始密码

另外一种方法查看默认密码:

cat /root/.mysql_secret

The random password set for the root userat Fri Jan 10 20:00:34 2014 (local time): aJqZsA2m
“aJqZsA2m”就是我们要找的初始密码

ps:这上面两种方法都是在网上找的,第一个方法我是在log中没有找到对应的密码记录,第二方法找到的密码也登陆不进去,不知道哪里操作错误了,最后还是使用的下面的mysql找回密码大招登陆进去的

  1. mysql密码找回
  • 方法一:
vi /etc/my.cnf

在[mysqld]下加上 skip-grant-tables,如:

[mysqld] 
datadir=/var/lib/mysql 
socket=/var/lib/mysql/mysql.sock 
skip-grant-tables 

重启mysql

service mysqld restart 

登陆mysql后就可以修改密码了

mysql -u root

update mysql.user set authentication_string=PASSWORD('123456') where User='root'; 
flush privileges; 

然后改回my.cnf重启mysql。

  • 方法2:
    先暂停mysql
    以不检查权限的方式启动
bin/mysqld_safe  --skip-grant-tables & 

登陆mysql后就可以修改密码了

mysql -u root

update mysql.user set authentication_string=PASSWORD('123456') where User='root'; 
flush privileges; 

然后重启mysql就ok了

service mysqld restart 

登录后任何操作都会有这个提示:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

还需要刷新一次密码才行

set password for root@localhost = password('123456'); 
flush privileges; 
<think>好的,我现在需要帮助用户查找MySQL5.7初始密码位置或查看方法。首先,我得回忆一下MySQL5.7的安装过程,尤其是安全方面的变化。记得从5.7版本开始,MySQL在初始化时会为root用户生成一个临时密码,而不是像旧版本那样允许空密码登录。这个临时密码通常存储在日志文件中,所以用户需要查看特定的日志来找到它。接下来,用户提到的引用中有关于MySQL初始化的内容,比如引用[1]提到root用户密码过期,这可能和临时密码有关。引用[2]是关于docker-compose配置MySQL的环境变量,比如MYSQL_ROOT_PASSWORD,这可能是在容器环境下设置密码的方式,但用户现在的问题不是如何设置,而是如何找到默认密码。引用[3]是关于分组查询的内容,可能和当前问题关联不大,但需要确认是否有其他相关信息。用户的问题是如何找到MySQL5.7的默认密码位置或查看方法。根据我的知识,MySQL5.7在初始化后,临时密码会记录在错误日志中。通常,错误日志的位置取决于安装方式,比如默认安装可能在/var/log/mysqld.log或者通过datadir路径下的主机名.err文件。如果是使用systemd管理的系统,可能需要使用journalctl命令来查看日志。此外,如果用户是通过Docker安装的MySQL,情况可能不同,比如在容器启动时通过环境变量指定密码,或者通过挂载的init脚本初始化数据库。这时候可能需要检查docker的日志或者相关的环境变量配置,如引用[2]中的MYSQL_ROOT_PASSWORD是否被设置,如果没有设置,可能容器会自动生成密码,但通常Docker的MySQL镜像会允许通过环境变量直接设置root密码,而不是生成临时密码。需要提醒用户,如果已经修改过root密码忘记了,可能需要通过跳过权限表的方式重置密码,但这是高级操作,涉及到停止服务、修改启动参数等步骤,可能存在风险。总结步骤应该是:1.确认MySQL的安装方式(是否是Docker)。2.根据安装方式查找错误日志的位置。3.在日志中搜索“temporarypassword”关键字。4.如果找不到日志,可能需要检查MySQL的配置文件确认日志路径。5.对于Docker环境,检查容器启动时的环境变量或查看容器日志。同时,需要验证这些步骤是否正确,确保提供的信息准确,特别是日志路径和命令示例。另外,要考虑到不同操作系统或安装方式可能存在的差异,比如Linux和Windows的日志路径不同,或者使用包管理器安装和手动编译安装的区别。可能还需要提醒用户,如果初始化时没有生成临时密码,可能是因为使用了某些选项跳过了安全设置,或者安装过程中出现了错误。这时候可能需要重新初始化MySQL。最后,生成相关问题,帮助用户深入理解,比如如何修改root密码、如何处理密码过期、或者如何配置MySQL的日志文件路径等。</think>### MySQL 5.7初始密码查看方法 MySQL 5.7在首次初始化时,默认会为`root`用户生成一个临时密码。以下是具体查看方法: --- #### **1. 通过错误日志查找临时密码** - **默认日志路径**: - Linux系统:`/var/log/mysqld.log` - 使用`systemd`管理的系统:通过以下命令查看 ```bash journalctl -u mysqld.service | grep "temporary password" ``` - 自定义数据目录:若MySQL配置文件(`my.cnf`)中指定了`datadir`,则日志文件通常位于`datadir`目录下,文件名为`主机名.err`,例如: ```bash grep 'temporary password' /var/lib/mysql/hostname.err ``` --- #### **2. Docker环境下的特殊处理** 若通过Docker部署MySQL(如引用[2]的配置),初始密码行为取决于镜像类型: - **官方MySQL镜像**:若未通过`MYSQL_ROOT_PASSWORD`环境变量设置密码,容器启动时会生成临时密码并输出到容器日志中。查看方法: ```bash docker logs mysql_container_name 2>&1 | grep "GENERATED ROOT PASSWORD" ``` - **自定义密码**:若已在`docker-compose.yml`中配置`MYSQL_ROOT_PASSWORD: 123456`(如引用[2]),则无需查找临时密码,直接使用该密码登录。 --- #### **3. 密码过期处理** MySQL 5.7默认会强制首次登录时修改临时密码(如引用[1]所述)。若未修改导致密码过期,需以下步骤: 1. 使用临时密码登录: ```bash mysql -u root -p ``` 2. 修改密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!'; ``` --- #### **4. 未找到临时密码的解决方法** 若日志中无临时密码,可能初始化时未启用安全模式。需重新初始化并确保生成临时密码: ```bash # 停止MySQL服务 systemctl stop mysqld # 清理数据目录(谨慎操作!) rm -rf /var/lib/mysql/* # 重新初始化并生成日志 mysqld --initialize --user=mysql # 再次检查日志文件 grep 'temporary password' /var/log/mysqld.log ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值